package com.retail.common.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 基础实体类
 *
 * @author retail
 * @since 2024-01-01
 */
@Data
public class BaseEntity implements Serializable {

  private static final long serialVersionUID = 1L;

  /**
   * 主键ID
   */
  @TableId(type = IdType.ASSIGN_ID)
  private Long id;

  /**
   * 创建时间
   */
  @TableField(fill = FieldFill.INSERT)
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  private LocalDateTime createTime;

  /**
   * 更新时间
   */
  @TableField(fill = FieldFill.INSERT_UPDATE)
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  private LocalDateTime updateTime;

  /**
   * 创建人
   */
  @TableField(fill = FieldFill.INSERT)
  private Long createBy;

  /**
   * 更新人
   */
  @TableField(fill = FieldFill.INSERT_UPDATE)
  private Long updateBy;

  /**
   * 逻辑删除标识（0：未删除，1：已删除）
   */
  @TableLogic
  @TableField(fill = FieldFill.INSERT)
  private Integer deleted;

  /**
   * 版本号（乐观锁）
   */
  @Version
  @TableField(fill = FieldFill.INSERT)
  private Integer version;
}
